package com.example.dbcms.utils;

import io.swagger.annotations.Api;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期工具类
 */
@Api("日期工具类")
public class DateUtil {
    /**
     * 初始化Calendar
     */
    private static Calendar calendar = Calendar.getInstance();
    /**
     * 获取当前时间 格式 '年年-月月-日日 小时:分钟:秒钟'
     *
     * @return
     */
    public static String getCurrentDate() {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
        return simpleDateFormat.format(date);
    }

    /**
     * 将日期字符串(yyyy-MM-dd)转为日期对象
     * @param dataString
     * @return
     */
    public static Date changeStringToDate(String dataString){
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date dateTime = null;
        try {
            dateTime = simpleDateFormat.parse(dataString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return dateTime;
    }

    /**
     * 得到当前系统年份
     * @return
     */
    public static int getCurrentYear(){
        return calendar.get(Calendar.YEAR);
    }

    /**
     * 得到当前系统月份
     * @return
     */
    public static int getCurrentMonth(){
        return calendar.get(Calendar.MONTH)+1;
    }

    /**
     * 判断字符串是否能转化为日期
     * @param str
     * @return
     */
    public static boolean isValidDate(String str) {
        boolean convertSuccess=true;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        try {
            format.parse(str);
        } catch (ParseException e) {
            convertSuccess=false;
        }
        return convertSuccess;
    }

    /**
     * 解析日期字符串得到年份
     * @param dateString
     * @return
     */
    public static int getYear(String dateString){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(changeStringToDate(dateString));
        return calendar.get(Calendar.YEAR);
    }

    /**
     * 解析日期字符串得到月份
     * @param dateString
     * @return
     */
    public static int getMonth(String dateString){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(changeStringToDate(dateString));
        return calendar.get(Calendar.MONTH)+1;
    }

}
